約 3,962,136 件
https://w.atwiki.jp/javastudy/pages/7.html
動画(youtube) @wikiのwikiモードでは #video(動画のURL) と入力することで、動画を貼り付けることが出来ます。 詳しくはこちらをご覧ください。 =>http //atwiki.jp/guide/17_209_ja.html また動画のURLはYoutubeのURLをご利用ください。 =>http //www.youtube.com/ たとえば、#video(http //youtube.com/watch?v=kTV1CcS53JQ)と入力すると以下のように表示されます。
https://w.atwiki.jp/javamock/pages/21.html
char Javaにおいてcharはプリミティブ型の1つです。 charは文字リテラルを格納します。(「 」で文字を囲う) また、charはメモリ領域を16ビット(2バイト)確保します。 2バイト確保されるので、全角文字もcharで表すことができます。 char 使用例 1 CharSample1.java class CharSample1 { public static void main(String[] args) { //charの変数を初期化宣言 char charC = c ; char charH = h ; char charA = a ; char charR = r ; //表示 System.out.print(charC); System.out.print(charH); System.out.print(charA); System.out.print(charR); } } 実行結果 C \java javac CharSample1.java C \java java CharSample1 char char 使用例 2 (Unicodeエスケープを使用) CharSample2.java class CharSample2 { public static void main(String[] args) { //charの変数を初期化宣言 char charC = \u0063 ; char charH = \u0068 ; char charA = \u0061 ; char charR = \u0072 ; //表示 System.out.print(charC); System.out.print(charH); System.out.print(charA); System.out.print(charR); } } 実行結果 C \java javac CharSample2.java C \java java CharSample2 char 以上のように同様の実行結果になります。 Unicodeのコード番号を扱うときはUnicodeエスケープ(\u)を用います。 また、Unicodeのコード番号は16進数の4桁で表されます。 以下のように記述します。XXXXにはUnicodeのコード番号を記述します。 \uXXXX
https://w.atwiki.jp/debuneko333/pages/20.html
参考 http //amenti.usamimi.info/treemenu2.html !DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http //www.w3.org/TR/html4/strict.dtd" html head meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" link rel="stylesheet" href="import.css" type="text/css" media="all" / script type="text/javascript" !-- function qa(menu_class,menu_id) { var div=document.getElementById(menu_id); if (div.style.display == "block") div.style.display="none"; else { var sib=div.parentNode.childNodes; for (var i=0; i sib.length; i++) if (sib[i].className == menu_class) sib[i].style.display="none"; div.style.display="block"; } } title test /title /head body div id="first" div id="content" div id="qa" dl class="first-qa" dt a href="javascript qa( tree , menu1 );" 派遣法改正後新しく加わった職種はなんですか? /a /dt dd class="tree" id="menu1" p 従来は、OA機器操作、ファイリングなど人材派遣が認められていたのは、 br / 26業務だけでしたが2004年3月の労働者派遣法改正以降は、 /p ul li 港湾運送業務 /li li 建設業務 /li li 警備業務 /li /ul p これら3つを除くすべての業務について人材派遣が認められることとなりました。 br / この事より、販売、営業,医療、製造などスタッフの方々にとって活躍できるお仕事の幅が大幅に広がりました。 /p /dd dt a href="javascript qa( tree , menu2 );" 改正後の新職種の派遣期間は、どうなっていますか? /a /dt dd class="tree" id="menu2" p 物の製造業務については、改正法が施行されてから三年を過ぎる日までは、派遣期間は最長一年でしたが、 2007年3月より最長三年の派遣期間となりました。 医療関連業務は、社会福祉施設などの医療関連業務に限って解禁となりました。 /p /dd dt a href="javascript qa( tree , menu3 );" 派遣先で困ったことが起ったら? /a /dt dd class="tree" id="menu3" p リバティーの担当者にご遠慮なく何でもご相談ください。 br / あなたが気持ちよく働けるよう最善の努力を尽くします。 /p /dd /dl /div /div /div /body /html
https://w.atwiki.jp/javamock/pages/22.html
boolean Javaにおいてbooleanはプリミティブ型の1つです。 booleanは論理リテラルtrue(真)またはfalse(偽)の2種類の値だけを扱います。 2種類だけなので割り当てるメモリは1ビットです。 boolean 使用例 1 BooleanSample1.java class BooleanSample1 { public static void main(String[] args) { boolean booleanFalse = false; boolean booleanTrue = true; System.out.println("booleanFalse " + booleanFalse); System.out.println("booleanTrue " + booleanTrue); } } 実行結果 C \java javac BooleanSample1.java C \java java BooleanSample1 booleanFalse false booleanTrue true 上記プログラムは変数に値を代入し表示しただけです。 上記結果のようにfalseとtrueが表示されます。 boolean 使用例 2 BooleanSample2.java class BooleanSample2 { public static void main(String[] args) { boolean booleanFalse = false; boolean booleanTrue = true; System.out.println("booleanFalse " + booleanFalse); System.out.println("booleanTrue " + booleanTrue); } } 実行結果 C \java javac BooleanSample2.java C \java java BooleanSample2 booleanFalse == booleanTrue false booleanFalse != booleanTrue true booleanFalse || booleanTrue true booleanFalse booleanTrue false また、上記のような比較演算子と論理演算子が使えます。 boolean 使用例 3 BooleanSample3.java class BooleanSample3 { public static void main(String[] args) { boolean booleanFalse = false; boolean booleanTrue = true; System.out.println("booleanFalse | booleanTrue " + (booleanFalse | booleanTrue)); System.out.println("booleanFalse booleanTrue " + (booleanFalse booleanTrue)); System.out.println("booleanFalse ^ booleanTrue " + (booleanFalse ^ booleanTrue)); System.out.println(); System.out.println("booleanFalse | booleanFalse " + (booleanFalse | booleanFalse)); System.out.println("booleanFalse booleanFalse " + (booleanFalse booleanFalse)); System.out.println("booleanFalse ^ booleanFalse " + (booleanFalse ^ booleanFalse)); System.out.println(); System.out.println("!booleanFalse | booleanTrue " + (!booleanFalse | booleanTrue)); System.out.println("!booleanFalse booleanTrue " + (!booleanFalse booleanTrue)); System.out.println("!booleanFalse ^ booleanTrue " + (!booleanFalse ^ booleanTrue)); } } 実行結果 C \java javac BooleanSample3.java C \java java BooleanSample3 booleanFalse | booleanTrue true booleanFalse booleanTrue false booleanFalse ^ booleanTrue true booleanFalse | booleanFalse false booleanFalse booleanFalse false booleanFalse ^ booleanFalse false !booleanFalse | booleanTrue true !booleanFalse booleanTrue true !booleanFalse ^ booleanTrue false 上記の使用例も論理演算子を使った例です。 boolean 使用例 4 BooleanSample4.java class BooleanSample4 { public static void main(String[] args) { boolean booleanVariable = true; booleanVariable = (booleanVariable) ? true false; System.out.println(booleanVariable); booleanVariable = (booleanVariable) ? false true; System.out.println(booleanVariable); } } 実行結果 C \java javac BooleanSample4.java C \java java BooleanSample4 true false 上記のように三項演算子も使えます。
https://w.atwiki.jp/solutionlog/pages/29.html
Webアプリケーションの種類 プレゼンテーション指向 動的な内容を含む、マークアップによるインタラクティブなWebページ サービス指向 Webサービスのエンドポイント プレゼンテーション指向のWebアプリがクライアントになることが多い Webアプリケーション Webコンポーネントは動的な拡張性を与える サーブレット サービス指向のアプリの実装に向いてる リクエストのディスパッチ、バイナリデータの扱いなどプレゼンテーション指向アプリのコントロール JSF,Facelets XHTMLとかのテキストマークアップページの生成 JSP Webサービスエンドポイント WebコンポーネントはWebコンテナによって提供される リクエストディスパッチ セキュリティ 並行性 ライフサイクル管理 名前空間、トランザクション、メールなどへのアクセス Webアプリケーションの設定 JavaEEアノテーション XML設定ファイル Webアプリケーションのライサイクル Webアプリケーションの作成、配置、実行 Webコンポーネントの作成 DD作成 コンパイル パッケージング Webコンテナへの配置 Webモジュール Webリソース=Webコンポーネント、静的なWebコンテンツファイル Webモジュール=最小の配備可能で利用可能なWebリソースの単位 サーブレットのWebアプリケーションに対応 サーバサイドのユーティリティクラスやクライアントサイドのクラスも含められる Webモジュールの構成(ドキュメントルート以下) application-specific-dir WEB-INF classes tags lib web.xml JSFを使う場合 セキュリティ情報を設定する場合 Webコンポーネントアノテーションの設定をオーバライドする場合 ejb-jar.xml Webモジュールはパッケージされない状態、またはWARファイルとして配備できる WARをGlassfishにデプロイする glassfish-web.xml を WEB-INFにおく 実行時DD Webアプリケーションのコンテキストルート アプリケーションリソース名とGlassfishサーバ上でのリソース名のマッピング Packaging a Web Module Deploying a Web Module Listing Deployed Web Modules localhost 4848 の管理コンソールから確認 asadmin list-applications Updating a Web Module Dynamic Reloading コードやDDを変更したときに、再デプロイが不要 変更したクラスファイルをコピーするだけでいい サーバが定期的に、変更をチェックして自動的に再デプロイしてくれる 開発時には有効だけど、製品モードではパフォーマンスが落ちるからやめたほうがいい。 リロードされるとセッションが無効になる GlassFish ではデフォルトで有効 管理コンソールから無効にできる Undeploying Web Modules Conguring Web Applications Webアプリケーションを設定するには、アノテーションまたはDDを用いる Mapping URLs to Web Components サーブレットのクラスアノテーション @WebServlet("/xxx") Declaring Welcome Files WebコンポーネントにマップされないURLに対して、ウェルカムファイルの検査が行われる http //host port/context/notmatch + welcome file name Setting Context and Initialization Parameters アプリケーションコンテキストオブジェクトをWebコンポーネントは共有する。 アプリケーションコンテキストまたは、Webコンポーネントに初期化パラメータを設定できる web.xmlに設定 @WebServlet(..., initParams={@WebInitParam(name="xxx", value="yyy")}) Mapping Errors to Error Screens エラーの種類に応じて、表示するエラー画面を設定できる HTTPレスポンスのステータスコード Java例外 DDでエラーの種類ごとにerror-page要素で指定する Declaring Resource References リソースはアノテーションを使ってインジェクションできる エンタープライズビーン、データソース、Webサービス インジェクション先は、コンテナ管理オブジェクトでないとだめ Servlet, Servlet filter, Event listener, Taglib listener, Taglib tag handler, Managed Bean Declaring a Reference to a Resource リソース参照には、@Resourceアノテーションを使う クラス、メソッド、フィールドに付与 コンテナによって、JNDIリソースがインジェクションされる 変数名と型によって、インジェクションするリソースが解決される 複数リソースをあるコンポーネントにインジェクションする @Resources ({ @Resource (name="myDB" type=java.sql.DataSource), @Resource(name="myMQ" type=javax.jms.ConnectionFactory) }) Declaring a Reference to a Web Service Webサービスの参照をインジェクションするには、@WebServiceRefアノテーションを使う
https://w.atwiki.jp/maisenakajima/pages/21.html
udevadm の出力結果 [root@rhel6 ~]# udevadm info --query=path --name=/dev/sda /devices/pci0000 00/0000 00 1f.2/host2/target2 0 0/2 0 0 0/block/sda [root@rhel6 ~]# udevadm info --query=symlink --name=/dev/sda block/8 0 disk/by-id/ata-ST330621A_7EF27GH9 disk/by-id/scsi-SATA_ST330621A_7EF27GH9 disk/by-path/pci-0000 00 1f.2-scsi-0 0 0 0 [root@rhel6 ~]# udevadm info --query=property --name=/dev/sda UDEV_LOG=3 DEVPATH=/devices/pci0000 00/0000 00 1f.2/host2/target2 0 0/2 0 0 0/block/sda MAJOR=8 MINOR=0 DEVNAME=/dev/sda DEVTYPE=disk SUBSYSTEM=block ID_ATA=1 ID_TYPE=disk ID_BUS=ata ID_MODEL=ST330621A ID_MODEL_ENC=ST330621A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20 ID_REVISION=3.39 ID_SERIAL=ST330621A_7EF27GH9 ID_SERIAL_SHORT=7EF27GH9 ID_ATA_WRITE_CACHE=1 ID_ATA_WRITE_CACHE_ENABLED=1 ID_ATA_FEATURE_SET_HPA=1 ID_ATA_FEATURE_SET_HPA_ENABLED=1 ID_ATA_FEATURE_SET_PM=1 ID_ATA_FEATURE_SET_PM_ENABLED=1 ID_ATA_FEATURE_SET_SECURITY=1 ID_ATA_FEATURE_SET_SECURITY_ENABLED=0 ID_ATA_FEATURE_SET_SECURITY_ERASE_UNIT_MIN=0 ID_ATA_FEATURE_SET_SMART=1 ID_ATA_FEATURE_SET_SMART_ENABLED=1 ID_ATA_FEATURE_SET_AAM=1 ID_ATA_FEATURE_SET_AAM_ENABLED=0 ID_ATA_FEATURE_SET_AAM_VENDOR_RECOMMENDED_VALUE=128 ID_ATA_FEATURE_SET_AAM_CURRENT_VALUE=0 ID_ATA_DOWNLOAD_MICROCODE=1 ID_ATA_SATA=1 ID_ATA_SATA_SIGNAL_RATE_GEN1=1 ID_SCSI_COMPAT=SATA_ST330621A_7EF27GH9 ID_PATH=pci-0000 00 1f.2-scsi-0 0 0 0 ID_PART_TABLE_TYPE=dos UDISKS_PRESENTATION_NOPOLICY=0 UDISKS_PARTITION_TABLE=1 UDISKS_PARTITION_TABLE_SCHEME=mbr UDISKS_PARTITION_TABLE_COUNT=2 UDISKS_ATA_SMART_IS_AVAILABLE=1 DEVLINKS=/dev/block/8 0 /dev/disk/by-id/ata-ST330621A_7EF27GH9 /dev/disk/by-id/scsi-SATA_ST330621A_7EF27GH9 /dev/disk/by-path/pci-0000 00 1f.2-scsi-0 0 0 0 [root@rhel6 ~]# udevadm info --query=all --name=/dev/sda P /devices/pci0000 00/0000 00 1f.2/host2/target2 0 0/2 0 0 0/block/sda N sda W 36 S block/8 0 S disk/by-id/ata-ST330621A_7EF27GH9 S disk/by-id/scsi-SATA_ST330621A_7EF27GH9 S disk/by-path/pci-0000 00 1f.2-scsi-0 0 0 0 E UDEV_LOG=3 E DEVPATH=/devices/pci0000 00/0000 00 1f.2/host2/target2 0 0/2 0 0 0/block/sda E MAJOR=8 E MINOR=0 E DEVNAME=/dev/sda E DEVTYPE=disk E SUBSYSTEM=block E ID_ATA=1 E ID_TYPE=disk E ID_BUS=ata E ID_MODEL=ST330621A E ID_MODEL_ENC=ST330621A\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20 E ID_REVISION=3.39 E ID_SERIAL=ST330621A_7EF27GH9 E ID_SERIAL_SHORT=7EF27GH9 E ID_ATA_WRITE_CACHE=1 E ID_ATA_WRITE_CACHE_ENABLED=1 E ID_ATA_FEATURE_SET_HPA=1 E ID_ATA_FEATURE_SET_HPA_ENABLED=1 E ID_ATA_FEATURE_SET_PM=1 E ID_ATA_FEATURE_SET_PM_ENABLED=1 E ID_ATA_FEATURE_SET_SECURITY=1 E ID_ATA_FEATURE_SET_SECURITY_ENABLED=0 E ID_ATA_FEATURE_SET_SECURITY_ERASE_UNIT_MIN=0 E ID_ATA_FEATURE_SET_SMART=1 E ID_ATA_FEATURE_SET_SMART_ENABLED=1 E ID_ATA_FEATURE_SET_AAM=1 E ID_ATA_FEATURE_SET_AAM_ENABLED=0 E ID_ATA_FEATURE_SET_AAM_VENDOR_RECOMMENDED_VALUE=128 E ID_ATA_FEATURE_SET_AAM_CURRENT_VALUE=0 E ID_ATA_DOWNLOAD_MICROCODE=1 E ID_ATA_SATA=1 E ID_ATA_SATA_SIGNAL_RATE_GEN1=1 E ID_SCSI_COMPAT=SATA_ST330621A_7EF27GH9 E ID_PATH=pci-0000 00 1f.2-scsi-0 0 0 0 E ID_PART_TABLE_TYPE=dos E UDISKS_PRESENTATION_NOPOLICY=0 E UDISKS_PARTITION_TABLE=1 E UDISKS_PARTITION_TABLE_SCHEME=mbr E UDISKS_PARTITION_TABLE_COUNT=2 E UDISKS_ATA_SMART_IS_AVAILABLE=1 E DEVLINKS=/dev/block/8 0 /dev/disk/by-id/ata-ST330621A_7EF27GH9 /dev/disk/by-id/scsi-SATA_ST330621A_7EF27GH9 /dev/disk/by-path/pci-0000 00 1f.2-scsi-0 0 0 0
https://w.atwiki.jp/extranote/pages/35.html
コマンドプロンプト --------- C \JAVA_LESSON javac ソースコード名.java --------- これに、コンパイル時のオプションを追加する。 --------- C \JAVA_LESSON javac -d classees ソースコード名.java -source 1.4 --------- こんな感じに書く、 どこに挟みこんでもエエらしい。 よく使うのは -d 生成するファイルを保存する場所を指定 -cp クラスパスを指定する、クラスファイルはここから探せと指定する -source 1.4でコンパイルしたいときは、-source 1.4 と書く -sourcepath クラスファイルではなく、ソースファイル(コンパイルしてない.java)はここから探せと指定する ほか詳細は --------- C \JAVA_LESSON javac --------- すると、オプションの説明文が表示される
https://w.atwiki.jp/javamock/pages/26.html
long Javaにおいてlongはプリミティブ型の1つです。 longはメモリ領域を64ビット確保します。 longは符号付き整数を扱うので、2の63乗(9223372036854775808)より、値の範囲は-9223372036854775808~9223372036854775807となります。 10桁以上の数値を扱う場合longを使います。 数値リテラルのデフォルトはint型のため、longのデータにはlまたはLを指定しなくてはいけません。 long 使用例 1 LongSample1.java class LongSample1 { public static void main(String[] args) { long longMax = 9223372036854775807L; long longMin = -9223372036854775808L; System.out.println("longMax " + longMax); System.out.println("longMin " + longMin); } } 実行結果 C \java javac LongSample1.java C \java java LongSample1 longMax 9223372036854775807 longMin -9223372036854775808 long 値範囲を超えた場合 1 LongSample2.java class LongSample2 { public static void main(String[] args) { long longMax = 9223372036854775808L; long longMin = -9223372036854775809L; System.out.println("longMax " + longMax); System.out.println("longMin " + longMin); } } コンパイル結果 C \java javac LongSample2.java LongSample2.java 5 整数 9223372036854775808 が大き過ぎます。 long longMax = 9223372036854775808L; ^ LongSample2.java 6 整数 -9223372036854775809 が大き過ぎます。 long longMin = -9223372036854775809L; ^ エラー 2 個 以上のようにコンパイルエラーが起こります。 long 値範囲を超えた場合 2 LongSample3.java class LongSample { public static void main(String[] args) { long longMax = 9223372036854775807L; long longMin = -9223372036854775808L; System.out.println("longMax - longMin " + (longMax - longMin)); } } 実行結果 C \java javac LongSample.java C \java java LongSample longMax - longMin -1 上記プログラムは本来なら9223372036854775807-(-9223372036854775808)で longの値範囲を超えてしまいエラーになりそうですが、longの値は循環するそうです。 循環するので上記計算は 9223372036854775807-(-9223372036854775808) ↓ 9223372036854775807+9223372036854775808 ↓ 9223372036854775808はlong型の範囲を超えているので超えた分が循環し-9223372036854775808になる 9223372036854775807-9223372036854775808 ↓ -1 となることがわかります。
https://w.atwiki.jp/ippei/pages/8.html
OpenHRP導入編しましょ 起動したっスよ モデルも作ってみますか? コントローラ製作 OpenHRP OpenHRPとは 独立行政 法人産業技術総合研究所、東京大学、 財団法人製造科学技術センターによって開発されたヒューマノイドロボティクスのための総合ソフトウェア開発環境で、動力学シミュレー タV-HRP、 基本動作ライブラリHRP-C等から構成されています。OpenHRPを使用 すると、 ロボット実機を用いること無く、ロボット動作制御則(コントローラ) を仮想環境内で開発/検証することが可能になります。 ってのが公式サイトからのコピペ http //www.is.aist.go.jp/humanoid/openhrp/Japanese/ よーするに2足歩行ロボット向けのシミュレータです。 上の公式サイトで大体の使い方は書いてあるけど、まあ細々とした補足をまとめようかと ただし、これを書いている本人はロボット工学などは全の初心者のため、書いてあることに 誤りがある可能性も否定できないので注意 導入編しましょ まあ、何はともあれ正式に使うにはライセンスがいります。 http //www.is.aist.go.jp/humanoid/openhrp/Japanese/license.html ちゃちゃっと登録しましょう。あと、パスワードは忘れないように。 ライセンス登録が終わったらインストールと起動のページに従って環境を整えましょう。 OpenHPR本体以外に必要なものは以下の通り Linux(インストール)(起動) GCC Version 2.95.x Java2 SDK 1.4.1 Standard Edition Java3D API 1.3 vrml97.jar Java Media Framework API gccはthreadを有効にしないと使えないので公式サイトにもあるようにソースからmakeし直しましょう。 Win2K(インストール)(起動) Visual C++ 6.0 Java2 SDK 1.4.1 Standard Edition Java3D API 1.3.1 vrml97.jar Java Media Framework API 2.1.1e VC++は書いてあるように6.0を使った方がいいです。. NETなどはコンパイル後のバイナリが使えませんでした。 JAVAについてはJREでもOKと書いてありますが、JREは付属しているコマンド(jarとか) が足りないのでOpenHRPのmakeで引っかかります。ごり押しでも配置は可能ですが J2SDKの方が無難でしょう。 あとWindowsの人はJAVAのインストールパスに注意!"c \Program File\java"など パスにスペース含むとnmakeで引っかかります。 起動したっスよ 導入の一連の作業が終わったらise.shかise.batでクライアントのWindowが出てきます。 出てこない人は公式ページのインストールと起動のところを百回ぐらい読み直してください。 それで駄目ならあきらめれ まぁ、ともかく。基本的な操作方法は http //www.is.aist.go.jp/humanoid/openhrp/Japanese/ISEmanual.pdf に書いてあります。操作方法を読みながらサンプルプロジェクトを動かしてみましょう。 ブロックが落ちてきたり、骨ロボットが歩いたりしたら成功です。 モデルも作ってみますか? OpenHRPはモデルのデータにVRML?2.0を使います。 VRML2.0にはH-ANIM(Humanoid Animation)と言う人体モデルを定義する規格があり、 こいつを使ってモデルを作ります。 モデルの作り方とサンプルモデルのページを一通り読んでおきましょう。 作り方の手順おおざっぱな手順です まずはリンク機構を決める これは、説明し出すと長いので詳細はなしにします。 各リンクごとのオブジェクトモデルを作成 この辺は、出来れば3DCAD、譲歩して3Dモデラーを使いましょう。テキスト手書きはたぶん神業の域です。 当り前の話ですが、VRML出力可能なものを使いましょう。 SolidWorksがVRML2.0も対応していて最適なのですが、100万円ほどします( ´∀`) で、オブジェクト作成時の注意点です。説明は後述。 オブジェクトはモデラーやCADで言う原点を中心に回転するように作成する。 オブジェクトはZ軸を中心にX-Y平面に水平に回転するように作成する。 作成したオブジェクトを統合する本体VRMLを作成 ぶっちゃけ、CADやモデラーがどれほど優秀でもH-ANIM規格のVRML吐いてくれるやつは ありません。六角大王の付属TOOLで一応存在しますが 残念ながらOpenHRPで使えるようなものは出力してくれません。 と言うわけでこればっかりは手書きです。オブジェクトモデルをInlineでインクルードしましょう。 公式サイトのモデルの作成法に書いて有るとおりに作ったらいいのですが少しだけ補足 Jointノードのうち使えるパラメータはjointType,jointId,translation,rotation,dhのみ centerやjointAxisなどのパラメータは使用できないため、回転の中心点や回転軸の変更はできません。(デフォルトはオブジェクトモデルの原点中心にZ軸回転)よって上のオブジェクト作成時の規制があるわけです。 rotation(回転)のパラメータは(x,y,z,θ)の4つ (x,y,z)で表されるベクトルを中心軸にθ回転します。 座標上の長さの1単位につき1m、massは単位/kg massを大きさ的にあり得ない値にするとシミュレーションしたときにえらいことになります。 二足歩行ロボットのモデルなんて作るの無理じゃぁって人には(僕もだが) 東京大学 中村・岡田研究室のHPでhoap-1のモデルが公開されているのでありがたく使わせていただきましょう。 http //www.ynl.t.u-tokyo.ac.jp/hoap-1/hoap-1.html hoap-1の取扱説明書も参考にするとやりやすいと思います。 コントローラ製作 モデルも用意できたところでとりあえず動かしてみよう。 とりあえずここに書いてあることを一通り目を通しておきましょう。 ちなみに、今回は独自コントローラは無視です。簡易コントローラでも十分使えますし… 独自コントローラに関してはMLなどで質問した方が良いでしょう。 COLOR(RED) *注意! C++とある程度オブジェクト指向を知ってないと厳しいです。 デフォルトで用意されているのは、HGコントローラとPDコントローラです。 前者は各関節の角度、角速度、角加速度をあたえるとそのとおりに動くシステムで名前のとおり、 何がなんでもその動作をするためにほぼ無限のゲインで動きます。 後者のPDコントローラは関節ごとの角度などから自分でトルクを計算してその結果で動作します。 PDはヒジョーにややこしいのでHGで行きましょう。 つづかない
https://w.atwiki.jp/n-3104/pages/14.html
JUnit4 Mockオブジェクトの利用 ソースの配置フォルダとパッケージ JUnit4 4からはアノテーションが使えてすっきりする。 POJOとして作成できる(TestCaseの継承が不要)。 テストメソッド名に「test」プレフィックスが不要。その代わり@Testアノテーションを付ける。 assertはorg.junit.Assertをstaticインポート。Eclipseのウィザードでクラスを作ると入れておいてくれる。 @Ignoreを利用すると、そのメソッドについてはテストしないように出来る。作成中のテストメソッドに使うと便利。 3までは junit.framework.- パッケージを利用したが、4からは org.junit.- を利用する。 @Parametersを使うことで、テストデータとテストデータの組み合わせの数だけテストを実行することが出来る。 @Test(timeout = 1000)とすることで、テストに掛かる時間にタイムアウトを設けられる。パフォーマンスが重要な処理などで利用できそう。 参考サイト |http //www.okisoft.co.jp/esc/testing/JUnit4-TestNG.html|4の使い方について丁寧に説明しているサイト。 |http //www.devx.com/Java/Article/31983+codeitemarea|JUnitのサイトで紹介されている4の解説サイト。英語だがサンプルコードもあり、概要がよく整理されている。@Parametersの例もある。 |http //www.junit.org/taxonomy/term/12|JUnitのホームページのArticlesのページ。他にも色々リンクがあり、例えばMockオブジェクトの利用法に関するリンクなどもある。 Mockオブジェクトの利用 バグがないプログラムのつくり方|http //www.amazon.co.jp/gp/product/479810714X/に記述があったが、Mockオブジェクトはテストクラスのインナークラスとすると管理がしやすいし、Mockオブジェクト内でassertを行ったり、クラスが呼ばれたかどうかを調べることも出来る。 具体的には、以下のようにHogeとFugaがあった際に、FugaのMockを作ることで以下のテストが出来る。 Hogeが追加された全てのFugaのfugafugaメソッドを実行しているか。HogeTestのcountフィールドを利用して確認している。 HogeがFugaのfugafugaメソッドを呼び出す際に正しくプレフィックスやサフィックスを追加しているか。HogeMock内のassertEqualsで確認している。 しかし、インナークラスにこんな使い方があるとは、勉強になる。 import java.util.ArrayList; import java.util.List; public class Hoge { List Fuga list = new ArrayList Fuga (); public void hogehoge(String message) { for (int i = 0; i list.size(); i++) { Fuga fuga = list.get(i); fuga.fugafuga("+++" + message + "+++"); } } public void addFuga(Fuga fuga) { list.add(fuga); } } public interface Fuga { void fugafuga(String message); } import static org.junit.Assert.assertEquals; import org.junit.Test; public class HogeTest { // HogeによってFugaのfugafugaメソッドが呼ばれた回数 private int count; private class FugaMock implements Fuga { public void fugafuga(String message) { // HogeがFugaのfugafugaを呼び出す際に、プレフィックスとサフィックスを // 正しく追加できているかを確認 assertEquals("+++Hello*+++", message); // HogeがFugaのfugafugaメソッドを実行した回数を確認するためインクリメント count++; } } protected void setUp() { this.count = 0; } @Test public void testHogehoge() { Hoge hoge = new Hoge(); hoge.addFuga(new FugaMock()); hoge.addFuga(new FugaMock()); hoge.hogehoge("Hello*"); assertEquals(2, this.count); } } ソースの配置フォルダとパッケージ バグがないプログラムのつくり方|http //www.amazon.co.jp/gp/product/479810714X/によると、テスト対象のソースと同一パッケージの同一フォルダが良いらしい。理由としては、別フォルダにするとテストクラスの作り忘れが起きやすいからだそうだ。確かにそんな気もするので、今後は同一フォルダに入れるようにしよう。 個人的には、パッケージは同じでもソースフォルダは別にした方が、テストクラス用のユーティリティクラスを作った際などに分かりやすくてよい気もするんだけど。この辺はプロジェクトの規模とメンバーのレベルによるのかな。